/***********************************************************************************

文件名：    TSObserverPattern.h

文件描述：  定义观察者模式的观察类和主题类，两者均为抽象类

创建人：    徐华青 2017-7-11

版本号：    1.0.0.0

修改记录：  无

备注：     观察者模式实现了视图和模型的分离，实体类和界面类通过该模式通讯，解除两者之间的耦合，方便代码的复用

***********************************************************************************/

#ifndef TS_OBSERVER_PATTERN_H
#define TS_OBSERVER_PATTERN_H

//#include <qglobal.h>

/**
 * @brief The TSObserver class 观察者抽象类
 */
class TSObserver
{
public:

    /**
     * @brief UpdateObserver 接收到消息后更新观察者对象
     * @param nMsgTpye       消息类型
     */
    virtual void UpdateObserver(int message, void *param) {  }

};


/**
 * @brief The TSSubject class 主题抽象类
 */
class TSSubject
{
public:

    /**
     * @brief Attach    绑定观察者对象
     * @param pObserver 观察者对象
     */
    virtual void Attach(TSObserver *pObserver) = 0;

    /**
     * @brief Detach    解绑观察者对象
     * @param pObserver 观察者对象
     */
    virtual void Detach(TSObserver *pObserver) = 0;

    /**
     * @brief Notify   向观察者对象发送消息
     * @param nMsgType 消息类型
     */
    virtual void Notify(int nMsgType, void *param) = 0;

};

#endif // TS_OBSERVER_PATTERN_H
